Skip to content

Optimize GLM-5.2-MXFP4 SGLang Agentic Performance on MI355X - #2900

Merged
edwingao28 merged 21 commits into
mainfrom
dev/jiejing/glm5.2-sglang-opt-0908
Sep 13, 2026
Merged

Optimize GLM-5.2-MXFP4 SGLang Agentic Performance on MI355X#2900
edwingao28 merged 21 commits into
mainfrom
dev/jiejing/glm5.2-sglang-opt-0908

Conversation

@jiejingzhangamd

@jiejingzhangamd jiejingzhangamd commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Description / 描述

English

This PR updates and tunes the GLM-5.2-MXFP4 SGLang AgentX configuration for MI355X:

  • Update the upstream SGLang ROCm image from lmsysorg/sglang-rocm:v0.5.16-rocm720-mi35x-20260728 to lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910.
  • Switch the DSA prefill and decode backends from tilelang to the upstream Fast Triton Sparse MLA backend.
  • Replace the removed --cuda-graph-max-bs alias with the canonical --cuda-graph-max-bs-decode option while retaining the min(2 * CONC, 64) limit.
  • Reduce the TP HiCache host-pool ratio from 1.5 to 1.0, lowering pinned host memory from approximately 679 GB to 453 GB for TP4. The DP-attention ratio remains 0.5.
  • Keep write_through as the default HiCache write policy.
  • Append the corresponding performance changelog entry.

The PR does not patch or modify the inference engine inside the container; the pinned upstream image runs as shipped.

中文

本 PR 更新并优化 MI355X 上的 GLM-5.2-MXFP4 SGLang AgentX 配置:

  • 将上游 SGLang ROCm 镜像从 lmsysorg/sglang-rocm:v0.5.16-rocm720-mi35x-20260728 更新到 lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910
  • 将 DSA prefill 和 decode 后端从 tilelang 切换到上游 Fast Triton Sparse MLA 后端。
  • 使用规范参数 --cuda-graph-max-bs-decode 替换已移除的 --cuda-graph-max-bs 别名,同时保留 min(2 * CONC, 64) 的限制。
  • 将 TP HiCache host-pool ratio 从 1.5 降低到 1.0,使 TP4 的 pinned host memory 从约 679 GB 降至 453 GB;DP-attention ratio 保持为 0.5
  • 保持 write_through 为默认 HiCache 写入策略。
  • perf-changelog.yaml 中追加对应的性能变更记录。

本 PR 不会修改或修补容器内的推理引擎;固定的上游镜像将按原样运行。

Related Issue / 相关事项

Supersedes #2887.

Type of Change / 变更类型

  • Bug fix
  • New feature
  • Configuration change
  • Documentation update
  • Other

Validation / 验证

Validated configurations:

  • TP4/EP4 with HiCache DRAM offload at concurrency 1, 2, 4, 8, 10, 12.
  • TP8/EP1 without KV offload at concurrency 1, 2, 4, 10.
  • AgentX eval passed for TP4/EP4 at concurrency 12.
  • SGLANG_SIMULATE_ACC_LEN=3.61 matches the committed thinking-enabled GLM-5.2 golden acceptance length for five-step MTP.

Checklist / 检查清单

  • I have tested my changes locally.
  • I have updated documentation if necessary. No documentation changes are required for this configuration-only update.
  • For every benchmark-affecting change, I appended a new entry to perf-changelog.yaml without modifying historical entries.
  • An authorized maintainer posted /reuse-sweep-run 34582654120 after the final sweep and eval completed successfully.

lxgsbqylbk and others added 4 commits September 8, 2026 09:22
…ng-opt-0908

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	perf-changelog.yaml
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…lang-opt-0908

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	perf-changelog.yaml

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Comment thread perf-changelog.yaml Outdated

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.

Beyond the inline finding on the perf-changelog.yaml trailing-line removal, I checked two other AGENTS.md conventions for this diff: the --use-chat-template requirement for *_mtp.sh scripts calling run_benchmark_serving (this script is an agentic-coding benchmark that doesn't call run_benchmark_serving directly, so it doesn't apply), and the model.container == image rule for image bumps (this is a single-node config with no container key, so that multi-node rule doesn't apply either).

Extended reasoning...

This diff is a small, mechanical-looking change (image version bump plus a one-line default-policy revert) but it carries a reported finding: the removal of the pre-existing trailing whitespace-only line at the end of perf-changelog.yaml, which conflicts with AGENTS.md's explicit "append-only, byte-sensitive" invariant for that file. Since a reported finding exists, I did not restate it but instead checked adjacent conventions that could plausibly also be violated by this change — the --use-chat-template flag requirement and the model.container/image consistency rule — and confirmed both are inapplicable to these particular files (no run_benchmark_serving call in this agentic script; no container key in this single-node config entry). Given the outstanding inline finding, a human should still review before merge.

Comment thread perf-changelog.yaml
- "Bump the Qwen3.5 FP8 B200 SGLang image from lmsysorg/sglang:v0.5.14-cu130 to lmsysorg/sglang:v0.5.19-cu130."
- "Tune the 8k/1k serving recipe with --mamba-full-memory-ratio 0.37 and --linear-attn-prefill-backend flashinfer; raise max-prefill-tokens and chunked-prefill-size from 16384 to 32768 and mem-fraction-static from 0.8 to 0.86."
- "Expand the TP8 and TP4/EP1 sweep coverage through concurrency 640."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2866

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 (optional) The diff deletes the file's pre-existing trailing whitespace-only line (old file ended "...pull/2866\n \n", new ends "...pull/2866\n"), violating AGENTS.md's rule that perf-changelog.yaml is append-only/byte-sensitive: preserve all existing bytes and separator whitespace, append only at the tail. Fix: re-add the removed trailing line so no existing bytes are altered; only append the new entry above it, never edit or truncate the tail.

Extended reasoning...

Base file (at 4caeb31) ends with the last pr-link line followed by a line containing two spaces and a newline (confirmed via od -c). HEAD's perf-changelog.yaml drops that trailing line entirely (git diff shows a bare deletion with no matching addition at file end). AGENTS.md line 31 states the file is append-only and byte-sensitive and existing bytes/separator whitespace must be preserved, appends only at the tail — this diff instead mutates the tail by removing a byte sequence, which any tooling relying on byte-stable diffs/checksums against this file would flag or choke on, and sets precedent that trailing separator content can be silently dropped in future PRs.

Verification: normal (violates a documented non-negotiable invariant this diff introduces). Base perf-changelog.yaml at 4caeb31 ends with ...pull/2866\n \n — od -c on the base tail shows 2866 \n \n (a trailing line of two spaces plus newline after the final pr-link). HEAD's file ends ...pull/2866\n — od -c on the current tail shows 2866 \n with the whitespace-only line gone. The diff's last…

@jiejingzhangamd jiejingzhangamd added agentx AgentX benchmarks, recipes, and infrastructure AMD labels Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

5 similar comments
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Cold mha_varlen compile after ready is ~40s; the default 20s generate health check marked the server UnHealthy and lm_eval hit a dead port.

Co-authored-by: Cursor <cursoragent@cursor.com>
@jiejingzhangamd

Copy link
Copy Markdown
Collaborator Author

Pushed SGLANG_HEALTH_CHECK_TIMEOUT=120 on the MI355X SGLang MTP recipe.

The eval-only GSM8K job on mi355x-amds_09 (2026-09-09) was not a score miss: after ready, AITER JIT of mha_varlen_*_nmask_* took ~43s, /health (1-token generate, default 20s) marked the server UnHealthy, and lm_eval then got connection refused on :8897. Perf AgentX on the same recipe stays on simulated acc-len and does not hit that cold kernel the same way.

@github-actions

Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d4111. Configure here.

Comment thread benchmarks/single_node/agentic/glm5.2_fp4_mi355x_sglang_mtp.sh Outdated
jiejingzhangamd and others added 3 commits September 11, 2026 07:07
Co-authored-by: Cursor <cursoragent@cursor.com>
…lang-opt-0908

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	benchmarks/single_node/agentic/glm5.2_fp4_mi355x_sglang_mtp.sh
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown
Contributor

sgl-project/sglang#30575 exposes the Fast Triton Sparse MLA path as an
explicit backend; the 20260910 image already contains it.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

2 similar comments
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

@chunfangamd

Copy link
Copy Markdown
Collaborator

/stage-results 34582654120

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

@chunfangamd staged run 34582654120: https://inferencemax-app-git-staging-semianalysisai.vercel.app/inference?i_dates=2026-09-11~r34582654120

This run remains available across future /stage-results requests. Staging the same run ID again updates its staged data. Staging workflow

@chunfangamd

Copy link
Copy Markdown
Collaborator

/reuse-sweep-run 34582654120

@chunfangamd

Copy link
Copy Markdown
Collaborator

sgl-project/sglang#39106

@chunfangamd chunfangamd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a PR reviewer and CODEOWNER, I have reviewed this and have:

  • Verified that as of the moment of typing this, this is the latest version of PR_REVIEW_CHECKLIST.md
  • Verified that the general code quality meets the InferenceX standard and does not make the code quality any worse.
  • Verified that this PR has passed PR validation. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/34582654120
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/34582654120
  • Verified that speculative decoding PRs uses chat templates to align the AL distribution to real world
  • For agentic workloads: verified that speculative-decoding configs (EAGLE / MTP / draft models) run with simulated synthetic acceptance, with the acceptance-length value taken from the committed golden AL curve in golden_al_distribution/ for that model, thinking mode, and draft length. A submission may choose any supported draft length, but it may not substitute a different acceptance target.
  • Verified against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • Verified that the model architecture isn't changed with benchmark hacks like using --hf-overrides to skipping indexer for every x layers on models that don't natively support this. As a general rule, we won't accept optimizations that reduces the number of model architecture FLOPs. Anything that makes that same computation run faster is fair game; FLOPs at lower precisions is fine, given that the config passes private evals. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
  • If an company claims that they support vLLM/SGLang as first class LLM inference engines on their hardware, I have verified that the respective vLLM submission made using upstream https://hub.docker.com/u/vllm docker repo, upstream SGLang https://hub.docker.com/u/lmsysorg docker repo. The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
  • If an company claims that they support vLLM/SGLang as first class upstream in-tree LLM inference engines on their hardware, I have have verified that the respective vLLM/SGLang submission has been made before additional frameworks (TRT-LLM, ATOM, etc.). The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet.
  • Verified that every single-node vLLM/SGLang recipe in this PR is documented in the official vLLM recipes and/or the SGLang cookbook:
    • I linked the corresponding upstream PR in the vLLM recipe repo or SGLang repo and verified that it is MERGED before this InferenceX PR merges. An opened, draft, or closed-without-merge upstream PR does not satisfy this requirement. If the matching recipe was already published, I linked the published recipe/cookbook page in the additional detail section below.
  • Verified that this PR does not patch the inference engine or serving stack — the pinned image must run as shipped. This covers .patch files / git apply / patch, inline patches embedded in benchmark scripts (e.g. a python3/sed heredoc that rewrites installed engine sources before serving), in-place edits of site-packages, monkey-patching, overwriting container files, and installing forked/rebuilt engine wheels on top of the pinned image. The only exception is a patch covered by a filled-out waiver at docs/waiver/<PR_NUMBER>.md — named after the PR that introduces the patch and filed in that same PR, stating what is patched, why the unmodified upstream image cannot run this benchmark, the upstream PR/issue link, and the removal plan — which I have linked below in the additional detail section.
  • If this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

❌❌❌ REJECTED ❌❌❌

@chunfangamd — one blocker: the published SGLang cookbook recipe for GLM-5.2 MI355X MXFP4 still does not cover this PR's major parallelism args. The linked upstream PR (sgl-project/sglang#39106, merged 2026-09-11) only switches the DSA backend to triton; the MXFP4 cells remain TP4 with no --ep-size and the only MTP variant is 3-1-4, while this PR serves --tp 4 --ep-size 4 and --tp 8 --ep-size 1 arms with MTP 5-1-6. Extend the cookbook to document the EP4 and TP8 arms (and the 5-step MTP variant), or document a sanctioned exception in the sign-off.

✅ Check 0 (CODEOWNER): PASS — @chunfangamd is a listed owner of configs/amd-master.yaml; the script and perf-changelog.yaml are catch-all-only.
✅ Check 1 (sweep on in-PR commit): PASS — in-PR commit 45c7ebf has executed green agentic / (all 10 matrix points) and agentic eval / check-runs in run 34582654120; single-node */ and eval / are legitimately skipped for this agentic-only config.
✅ Check 2 (eval accuracy): PASS — GSM8K em_strict 0.9727 (n_eff 1319) on the TP4/EP4 MTP hicache c12 cell ≥ 0.90 bar (infx/evals/thresholds.yaml default, no glm5.2 override), run on this PR's image lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910.
❌ Check 3 (recipe): FAIL — major parallelism args missing from the merged/published recipe (GLM-5.2 cookbook, source docs/src/snippets/configs/zai-org/glm-5.2.jsx on sgl-project/sglang main after #39106): every MI355X MXFP4 cell is --tp 4 with no --ep-size (EP=1) and the only MTP cell is --speculative-num-steps 3 --speculative-num-draft-tokens 4, but this PR launches --tp 4 --ep-size 4 plus an undocumented --tp 8 --ep-size 1 arm, both with --speculative-num-steps 5 --speculative-num-draft-tokens 6. Model, --kv-cache-dtype fp8_e4m3, and --dsa-prefill-backend triton --dsa-decode-backend triton do match. (HiCache offload knobs, chunked-prefill, max-running-requests, --cuda-graph-max-bs-decode, and SGLANG_SIMULATE_ACC_* are InferenceX-specific tuning; informational only.)
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 34582654120 posted by @chunfangamd (COLLABORATOR).
✅ Check 5 (latest checklist): PASS — every item of the current template is present and checked.
✅ Check 6 (upstream image / engine-first): PASS — lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910 is the upstream lmsysorg org and the entry is itself SGLang.
✅ Check 7 (deprecations): PASS — GLM-5.2 agentic-coding MTP is the retained arm per MODELS.md as of 2026-09-12.
✅ Check 8 (architecture hacks): PASS — no --hf-overrides or FLOP-reducing overrides in the diff or launch command.
✅ Check 9 (spec-decode chat template): PASS — the agentic replay drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh).
✅ Check 10 (engine patches): PASS — no engine patching; install_agentic_deps installs client-side aiperf deps only.
✅ Check 11 (golden AL): PASS — SGLANG_SIMULATE_ACC_LEN=3.61 with match-expected/real-draft-token equals the golden AL for glm5.2 thinking_on at 5 speculative tokens (golden_al_distribution/glm5.2_mtp.yaml), matching --speculative-num-steps 5; simulation is correctly disabled for EVAL_ONLY.
➖ Check 12 (append-only): N/A — the new perf-changelog.yaml entry has no append-only: true.

@jiejingzhangamd

Copy link
Copy Markdown
Collaborator Author

Check 3 (recipe): FAIL — major parallelism args missing from the merged/published recipe (GLM-5.2 cookbook, source docs/src/snippets/configs/zai-org/glm-5.2.jsx on sgl-project/sglang main after #39106): every MI355X MXFP4 cell is --tp 4 with no --ep-size (EP=1) and the only MTP cell is --speculative-num-steps 3 --speculative-num-draft-tokens 4, but this PR launches --tp 4 --ep-size 4 plus an undocumented --tp 8 --ep-size 1 arm, both with --speculative-num-steps 5 --speculative-num-draft-tokens 6. Model, --kv-cache-dtype fp8_e4m3, and --dsa-prefill-backend triton --dsa-decode-backend triton do match. (HiCache offload knobs, chunked-prefill, max-running-requests, --cuda-graph-max-bs-decode, and SGLANG_SIMULATE_ACC_* are InferenceX-specific tuning; informational only.)

OK, Will update that part.

@chunfangamd chunfangamd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a PR reviewer and CODEOWNER, I have reviewed this and have:

  • Verified that as of the moment of typing this, this is the latest version of PR_REVIEW_CHECKLIST.md
  • Verified that the general code quality meets the InferenceX standard and does not make the code quality any worse.
  • Verified that this PR has passed PR validation. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/34582654120
  • Verified that this PR passes evals. Please link to GitHub Action workflow that shows this. https://github.com/SemiAnalysisAI/InferenceX/actions/runs/34582654120
  • Verified that speculative decoding PRs uses chat templates to align the AL distribution to real world
  • For agentic workloads: verified that speculative-decoding configs (EAGLE / MTP / draft models) run with simulated synthetic acceptance, with the acceptance-length value taken from the committed golden AL curve in golden_al_distribution/ for that model, thinking mode, and draft length. A submission may choose any supported draft length, but it may not substitute a different acceptance target.
  • Verified against the current MODELS.md that this PR does not submit a deprecated model, scenario, or model-scenario combination.
  • Verified that the model architecture isn't changed with benchmark hacks like using --hf-overrides to skipping indexer for every x layers on models that don't natively support this. As a general rule, we won't accept optimizations that reduces the number of model architecture FLOPs. Anything that makes that same computation run faster is fair game; FLOPs at lower precisions is fine, given that the config passes private evals. As an general north star princple, we should only use optimizations which is used in production by customers that care about accuracy
  • If an company claims that they support vLLM/SGLang as first class LLM inference engines on their hardware, I have verified that the respective vLLM submission made using upstream https://hub.docker.com/u/vllm docker repo, upstream SGLang https://hub.docker.com/u/lmsysorg docker repo. The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet as supported by vLLM/SGLang community maintainers
  • If an company claims that they support vLLM/SGLang as first class upstream in-tree LLM inference engines on their hardware, I have have verified that the respective vLLM/SGLang submission has been made before additional frameworks (TRT-LLM, ATOM, etc.). The only exceptions are for new hardware, such as MI455X UALoE72, Vera Rubin NVL72, Rubin NVL8, etc., and for new model architectures where there is an actual reason why vLLM/SGLang does not fundamentally support them yet.
  • Verified that every single-node vLLM/SGLang recipe in this PR is documented in the official vLLM recipes and/or the SGLang cookbook:
    • I linked the corresponding upstream PR in the vLLM recipe repo or SGLang repo and verified that it is MERGED before this InferenceX PR merges. An opened, draft, or closed-without-merge upstream PR does not satisfy this requirement. If the matching recipe was already published, I linked the published recipe/cookbook page in the additional detail section below.
  • Verified that this PR does not patch the inference engine or serving stack — the pinned image must run as shipped. This covers .patch files / git apply / patch, inline patches embedded in benchmark scripts (e.g. a python3/sed heredoc that rewrites installed engine sources before serving), in-place edits of site-packages, monkey-patching, overwriting container files, and installing forked/rebuilt engine wheels on top of the pinned image. The only exception is a patch covered by a filled-out waiver at docs/waiver/<PR_NUMBER>.md — named after the PR that introduces the patch and filed in that same PR, stating what is patched, why the unmodified upstream image cannot run this benchmark, the upstream PR/issue link, and the removal plan — which I have linked below in the additional detail section.
  • If this PR uses append-only: true, verified that it only adds generated points or recipe variants inside a selected existing config/scenario and existing same-image visual curve: every previously generated point remains present with the same recipe, no prior point is removed or rerun, and every benchmark-affecting change in the complete diff can affect only the corresponding newly appended points (never an existing point), regardless of which file contains it.
  • If any of the above criteria cannot reasonably be satisfied, I have provided additional reasoning below.

Additional detail section:

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

Re-verification after the earlier REJECTED verdict on this same head: the Check 3 blocker is resolved by the newly merged cookbook update linked in @chunfangamd's latest sign-off (approved review, 2026-09-12 23:47 UTC). The conversation-comment id this run was triggered with (5649477596) returns 404, so the sign-off body was verified from that review.

✅ Check 0 (CODEOWNER): PASS — @chunfangamd is a listed owner of configs/amd-master.yaml; the benchmark script and perf-changelog.yaml are catch-all-only.
✅ Check 1 (sweep on in-PR commit): PASS — in-PR commit 45c7ebf carries executed green agentic / (all 10 matrix points) and agentic eval / check-runs in run 34582654120; single-node */ and eval / are legitimately skipped for this agentic-only config.
✅ Check 2 (eval accuracy): PASS — GSM8K em_strict 0.9727 (n_eff 1319) on the TP4/EP4 MTP hicache c12 cell, above the 0.90 default bar (infx/evals/thresholds.yaml, no glm5.2 override), run on this PR's image lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910.
✅ Check 3 (recipe): PASS — sgl-project/sglang#39230 is MERGED (2026-09-12T22:57Z) and the GLM-5.2 cookbook MI355X MXFP4 cells now match every major arg: amd/GLM-5.2-MXFP4, --tp 8 --ep-size 1 (Low-Latency) and --tp 4 --ep-size 4 (High-Throughput), --kv-cache-dtype fp8_e4m3, --dsa-prefill-backend triton --dsa-decode-backend triton, MTP --speculative-num-steps 5 --speculative-eagle-topk 1 --speculative-num-draft-tokens 6, image v0.5.19-…-20260910. HiCache offload knobs, chunked-prefill, max-running-requests, --cuda-graph-max-bs-decode, parsers, and SGLANG_SIMULATE_ACC_* are InferenceX-specific tuning (informational only).
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 34582654120 posted by @chunfangamd (COLLABORATOR).
✅ Check 5 (latest checklist): PASS — every item of the current template is present and checked.
✅ Check 6 (upstream image / engine-first): PASS — lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910 is the upstream lmsysorg org; the entry is itself framework: sglang.
✅ Check 7 (deprecations): PASS — GLM-5.2 agentic-coding MTP is the retained arm per MODELS.md as of 2026-09-12.
✅ Check 8 (architecture hacks): PASS — no --hf-overrides or FLOP-reducing overrides in the diff or launch command.
✅ Check 9 (spec-decode chat template): PASS — the agentic replay drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh).
✅ Check 10 (engine patches): PASS — no engine patching; the only heredoc writes a Mooncake config JSON, and install_agentic_deps installs client-side deps only.
✅ Check 11 (golden AL): PASS — SGLANG_SIMULATE_ACC_LEN=3.61 with match-expected/real-draft-token equals the golden AL for glm5.2 thinking_on at 5 speculative tokens (golden_al_distribution/glm5.2_mtp.yaml), matching --speculative-num-steps 5; simulation is correctly disabled for EVAL_ONLY.
➖ Check 12 (append-only): N/A — the new perf-changelog.yaml entry has no append-only: true.

Comment thread perf-changelog.yaml Outdated
Comment on lines +6970 to +6981
- config-keys:
- glm5.2-fp4-mi355x-sglang-agentic-mtp
scenario-type:
- agentic-coding
description:
- "Update the SGLang ROCm image from lmsysorg/sglang-rocm:v0.5.16-rocm720-mi35x-20260728 to lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910."
- "Pick up our recent SGLang main-branch optimizations for GLM-5.2-MXFP4 serving."
- "Lower the TP HiCache host-pool ratio from 1.5 to 1.0 (DP-attention arm stays at 0.5). Eval and sweep still share the same ratio-based sizing; the smaller pool cuts pinned host DRAM on the TP4 arm (~453 GB vs ~679 GB). Keep the write policy at write_through: evals-only run 34569310922 passed with ratio 1.0 and write_through, so write_through_selective was unrelated to the earlier failure."
- "Remove the SGLANG_HEALTH_CHECK_TIMEOUT=120 override and its stale first-request JIT explanation; successful evals-only run 34569310922 used the default health-check timeout."
- "Replace the removed decode-only alias --cuda-graph-max-bs with its canonical name --cuda-graph-max-bs-decode, retaining the same min(2*CONC, 64) cap. The 20260910 image includes sgl-project/sglang#38375, so argparse interprets the removed spelling as an ambiguous prefix of the decode and prefill options and exits before serving. Leave --cuda-graph-max-bs-prefill unset: it controls a separate prefill token-capture ceiling, not request concurrency."
- "Switch DSA prefill and decode from tilelang to triton (sgl-project/sglang#30575 Fast Triton Sparse MLA). The 20260910 image already contains that backend; kv-cache-dtype stays fp8_e4m3, which the Triton DSA path requires."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2900

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you move this PR’s changelog entry to the end during the final sync with main, as required by the append only policy?
https://github.com/SemiAnalysisAI/InferenceX/blob/main/CONTRIBUTING.md#L19

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@Klaud-Cold

Copy link
Copy Markdown
Collaborator

✅✅✅ Verdict: PASS ✅✅✅

Verified at head f8e4fa6 against @chunfangamd's sign-off review (submitted on a517998). The only PR-owned change since that commit is f8e4fa6 relocating the identical perf-changelog.yaml entry to the end of the file after a main merge; the benchmark script and configs/amd-master.yaml are byte-identical to the signed-off commit.

✅ Check 0 (CODEOWNER): PASS — @chunfangamd is a listed owner of configs/amd-master.yaml; the benchmark script and perf-changelog.yaml are catch-all-only.
✅ Check 1 (sweep on in-PR commit): PASS — in-PR commit 45c7ebf carries executed green check-runs from run 34582654120: all 10 agentic / matrix points (TP4/EP4 hicache c1-c12, TP8/EP1 c1-c10) and agentic eval / are success; single-node */ and eval / are skipped only because this config is agentic-only.
✅ Check 2 (eval accuracy): PASS — GSM8K em_strict 0.9727 (n_eff 1319) on the TP4/EP4 MTP hicache c12 cell, above the 0.90 default bar in infx/evals/thresholds.yaml (no glm5.2 override); the eval job ran on this PR's image lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910.
✅ Check 3 (recipe): PASS — sgl-project/sglang#39230 is MERGED (2026-09-12T22:57Z, on main at 288627e) and the GLM-5.2 cookbook MI355X MXFP4 cells match every major arg: amd/GLM-5.2-MXFP4, --tp 8 --ep-size 1 (Low-Latency) and --tp 4 --ep-size 4 (High-Throughput), --kv-cache-dtype fp8_e4m3, --dsa-prefill-backend triton --dsa-decode-backend triton, --speculative-algorithm EAGLE --speculative-num-steps 5 --speculative-eagle-topk 1 --speculative-num-draft-tokens 6, image v0.5.19-rocm720-mi35x-20260910. HiCache offload knobs, chunked-prefill, max-running-requests, --cuda-graph-max-bs-decode, parsers, and SGLANG_SIMULATE_ACC_* / SGLANG_OPT_USE_TOPK_V2 envs are InferenceX-specific tuning (informational only).
✅ Check 4 (reuse command): PASS — /reuse-sweep-run 34582654120 posted by @chunfangamd (COLLABORATOR).
✅ Check 5 (latest checklist): PASS — every item of the current template is present and checked.
✅ Check 6 (upstream image / engine-first): PASS — lmsysorg/sglang-rocm:v0.5.19-rocm720-mi35x-20260910 is from the upstream lmsysorg org and the entry is itself framework: sglang.
✅ Check 7 (deprecations): PASS — glm5.2 agentic-coding MTP is the retained arm per MODELS.md as of 2026-09-13.
✅ Check 8 (architecture hacks): PASS — no --hf-overrides, model-config edits, or FLOP-reducing overrides in the diff or launch command.
✅ Check 9 (spec-decode chat template): PASS — the agentic replay drives /v1/chat/completions with --endpoint-type chat (benchmarks/benchmark_lib.sh).
✅ Check 10 (engine patches): PASS — no engine patching; the only heredoc writes a Mooncake config JSON and install_agentic_deps installs client-side aiperf deps into a separate venv.
✅ Check 11 (golden AL): PASS — SGLANG_SIMULATE_ACC_LEN=3.61 with match-expected / real-draft-token equals the golden AL for glm5.2 thinking_on at 5 speculative tokens in golden_al_distribution/glm5.2_mtp.yaml, matching --speculative-num-steps 5; simulation is correctly disabled for EVAL_ONLY.
➖ Check 12 (append-only): N/A — the new perf-changelog.yaml entry has no append-only: true.

@edwingao28
edwingao28 merged commit 2f9fa46 into main Sep 13, 2026
38 checks passed
@edwingao28
edwingao28 deleted the dev/jiejing/glm5.2-sglang-opt-0908 branch September 13, 2026 02:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agentx AgentX benchmarks, recipes, and infrastructure AMD full-sweep-enabled

Projects

Development

Successfully merging this pull request may close these issues.

5 participants